package cn.android666.net.util

/** 同步请求结果，该类的目的用于方便提供请求失败时的错误信息 */
class SyncRequestResult<T>(
    /** 请求结果，如果请求失败，则此结果为null，则errorMessage必定不为null，如果请求成功，则请求结果必定不为null且errorMessage必定为null */
    private val requestResult: T?,
    /** 封装了基本的请求结果：code、msg、success，有时候需要用到这些信息时就可以从这里取 */
    private val baseResult: RequestResult<*>?,
    /** 错误消息，当请求成功时为null，请求失败时才会有错误消息 */
    private val errorMessage: String?
) {
    /** 判断请求是否成功 */
    val isSuccess: Boolean get() = requestResult != null
    /** 请求结果 */
    val result: T get() = requestResult!!
    /** 请求失败时的错误信息 */
    val error: String get() = errorMessage!!

    override fun toString(): String {
        return "${SyncRequestResult::class.java.simpleName}(result=$requestResult, error=$errorMessage)"
    }
}